package cc.rengu.igas.cops.common.dao;

import cc.rengu.igas.cops.common.entity.CopsMchntBaseInfo;
import cc.rengu.igas.cops.common.entity.CopsMchntInfoForBaseAndAcctAndSign;
import cc.rengu.oltp.utility.bean.PageInfo;
import cc.rengu.oltp.utility.bean.PageResult;

import java.util.List;

/**
 * @Description 商户基本信息表操作接口
 * @Author panky
 * @date 2020/5/18
 **/
public interface CopsMchntBaseInfoMapper {

    /**
     * 根据 机构号/连锁商户号 查询
     *
     * @param instId       机构号
     * @param chainMchntNo 连锁商户号
     * @return 实体集合
     */
    List<CopsMchntBaseInfo> selectMchntBaseInfoByInstIdAndChainMchntnNo(String instId, String chainMchntNo) throws Exception;

    /**
     * 根据 机构号/商户号 查询
     *
     * @param instId  机构号
     * @param mchntNo 商户号
     * @return 实体
     */
    CopsMchntBaseInfo getMchntBaseInfoByInstIdAndMchntNo(String instId, String mchntNo) throws Exception;

    /**
     * 获取商户信息
     *
     * @param mchntNo 商户号
     * @return 实体结果
     * @throws Exception 异常
     */
    public CopsMchntBaseInfo getMchntBaseInfoByMchntNo(String mchntNo) throws Exception;


    /**
     * 多条件分页查询
     *
     * @param info     传入不确定数量的信息
     * @param pageInfo 分页类信息
     * @return 商户基本信息
     * @throws Exception 异常
     */
    PageResult selectCopsMchntBaseInfoByMoreVariable(CopsMchntInfoForBaseAndAcctAndSign info, PageInfo pageInfo) throws Exception;

    /**
     * 删除操作，对基础信息表
     *
     * @param instId  机构号
     * @param mchntNo 商户号
     * @param oprId   最后操作人
     */
    int delMchntBaseInfoByInstIdAndMchntNo(String instId, String mchntNo, String oprId) throws Exception;

    /**
     * 更改商户基础信息
     *
     * @param copsMchntBaseInfo 商户基础信息类
     * @return iReturnCode
     * @throws Exception 异常
     */
    int updateMchntBaseInfoByInstIdAndMchntNo(CopsMchntBaseInfo copsMchntBaseInfo) throws Exception;

    /**
     * 插入商户基础信息
     *
     * @param copsMchntBaseInfo 商户基础信息类
     * @return iReturnCode
     * @throws Exception 异常
     */
    int copsInsertMchntBaseInfo(CopsMchntBaseInfo copsMchntBaseInfo) throws Exception;


    /*
     *获取二级商户号后四位
     */
    String getNextMchntNoSeq() throws Exception;

    /**
     * 修改基本信息 状态
     *
     * @param copsMchntBaseInfo
     * @return
     * @zhangbin
     */
    int updateMchntBaseInfoByIdToAuditStatus(CopsMchntBaseInfo copsMchntBaseInfo) throws Exception;
}
